package com.sky.jtail.utils;

import com.sky.jtail.domain.FileObject;
import org.springframework.util.DigestUtils;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class FileUtil {

    public static boolean isDir(String path){
        File file = new File(path);
        if(file.isDirectory()){
            return true;
        }
        if(file.isFile()){
            return false;
        }
        return  false;
    }

    public static boolean filesExist(String path){
        File file = new File(path);
        return  file.exists();
    }

    public static List<FileObject> findFileList(File dir) {
        // 判断是否存在目录
        if (!dir.exists() || !dir.isDirectory()) {
            return new ArrayList<>();
        }
        List<FileObject>  list = new ArrayList<>();
        // 读取目录下的所有目录文件信息
        String[] files = dir.list();
        // 循环，添加文件名或回调自身
        assert files != null;
        for (String s : files) {
            File file = new File(dir, s);
            String fileName = file.getName();
            // 如果文件
            if (file.isFile()) {
                long length = file.length();
                //如果大于100MB ，不被展示
                if (length > 104857600) {
                    continue;
                }

                //不展示一下格式的文件
                if (fileName.endsWith(".png")
                        || fileName.endsWith(".jpg")
                        || fileName.endsWith(".jpeg")
                        || fileName.endsWith(".mp4")
                        || fileName.endsWith(".pdf")
                        || fileName.endsWith(".xls")
                        || fileName.endsWith(".xlsx")
                        || fileName.endsWith(".ppt")
                        || fileName.endsWith(".pptx")
                        || fileName.endsWith(".zip")
                        || fileName.endsWith(".rar")
                        || fileName.endsWith(".jar")
                        || fileName.endsWith(".war")
                        || fileName.startsWith(".")
                ) {
                    continue;
                }
                FileObject fileObject = new FileObject();
                String filePath = dir + File.separator + file.getName();
                String fileKey = DigestUtils.md5DigestAsHex(filePath.getBytes());
                fileObject.setDir(false);
                fileObject.setFileKey(fileKey.substring(0, 5));
                fileObject.setFileName(fileName);
                fileObject.setFilePath(filePath);
                list.add(fileObject);
            } else {
                // 如果是目录
                // 回调自身继续查询
               // findFileList(file);

                FileObject fileObject = new FileObject();
                String filePath = dir + File.separator + file.getName();
                String fileKey = DigestUtils.md5DigestAsHex(filePath.getBytes());
                fileObject.setDir(true);
                fileObject.setFileKey(fileKey.substring(0, 5));
                fileObject.setFileName(fileName);
                fileObject.setFilePath(filePath);
                list.add(fileObject);
            }
        }

        return list;
    }

}
